1. Technical Field
The present invention relates to data storage and retrieval generally and more particularly to a method and system of providing a virtual transport session.
2. Description of the Related Art
Information drives business. As the need to quickly and reliably store and access large volumes of data has increased, a number of storage techniques and architectures have been developed. One such architecture is the Storage Area Network (SAN). A SAN is a special-purpose network (or subnetwork) whose primary purpose is the interconnection and transfer of data among and/or between one or more data processing systems and one or more data storage elements. Conventional SANs comprise a number of data storage elements (e.g., disks, tapes, disk arrays, tape arrays, RAID array subsystems, robotic tape libraries, filers, and file servers, etc.) and data processing systems (e.g., servers, work stations, etc.) coupled together via a number of coupling elements (e.g. routers, bridges, switches, hubs, etc.) and Fibre Channel (FC) communication links. The term SAN is usually (but not necessarily) identified with block I/O services rather than file access services. More recently, IP-based storage area networks or “IP SANs” have been developed and implemented.
FIG. 1 illustrates an IP storage area network according to the prior art. The IP SAN of the illustrated embodiment includes a data processing system 100 coupled to a number of remote storage elements via a network 106 and a remote host 108 (e.g., a file server data processing system). Exemplary remote storage elements of the embodiment of FIG. 1 include disk drive 102 and tape drive 104. In IP storage, the TCP/IP suite of protocols is frequently used as a storage interconnect to transfer block-level data between initiator and target devices or modules (e.g., initiator and/or target hardware, software, or a combination thereof). An IP SAN is a storage area network based on the Internet Protocol (IP), typically transmitting over Gigabit Ethernet rather than on the Fibre Channel framework traditionally used for SANs. The Transmission Control Protocol (TCP), Infiniband (IB) Interface, Internet Small Computer System Interface (iSCSI), Internet Fibre Channel Protocol (iFCP), and Fibre Channel over IP (FCIP), also referred to as FC/IP, Fibre Channel tunneling, or storage tunneling storage transports may be implemented and utilized in an IP storage system.
FIG. 2 illustrates protocol stacks according to the prior art. In the depicted system, an initiator module 200 (e.g., a server) and a target module 202 (e.g., a data storage element) are coupled together via a network 204 (e.g., a TCP/IP network). Each module in turn implements a protocol stack including an application layer 206, a SCSI layer 208, an iSCSI layer 210, a TCP layer 212, an IP layer 214, and a Link/Ethernet layer 216 as shown. In a conventional iSCSI system, each stack layer provides an abstraction of one or more lower layers to the layer immediately above. Each layer may also operate on or with a distinct data unit type. In addition to providing an abstraction of TCP layer 212 to SCSI layer 208, iSCSI layer 210 enables the target module 202 to be presented to and accessed by initiator module 200 as if it were a local SCSI device. Alternatively or additionally an initiator and target may be coupled together using an Infiniband (IB) stack 218 and an Infiniband network 220 as shown.
iSCSI is an SCSI transport protocol for mapping of block-oriented storage data over TCP/IP networks. The iSCSI protocol enables universal access to storage devices and storage-area networks (SANs) over standard Ethernet-based TCP/IP networks. These networks may be dedicated networks or may be shared with traditional Ethernet applications. IP LAN/wide-area network (WAN) routers and switches can be used to extend the IP storage network to the wide area for applications such as synchronous and asynchronous remote disk copy or tape backup and restore. In the WAN environment, TCP will ensure data reliability, manage network congestion, and adapt retransmission strategies to WAN delays.
IP Ethernet network infrastructures provide major advantages for interconnection of servers to block-oriented storage devices. IP networks provide security, scalability, interoperability, network management, storage management, and are cost-effective.
The Small Computer Systems Interface (SCSI) is a popular family of protocols for communicating with I/O devices, especially storage devices. There are two types of devices in SCSI protocol; the SCSI Initiators (clients) start the communications and the Targets (servers) responds. The initiators are devices that request commands be executed. Targets are devices that carry out the commands. The endpoint, within the target, that executes the command is referred to as a “logical unit” (LU) and is addressed using a logical unit number of “LUN”. A target is a collection of logical units, in general of the same type, and is directly addressable. The structure used to communicate a command from an application client to a device server is referred to as a Command Descriptor Block (CDB). An SCSI command or a linked set of commands is referred to as a “task.” Only one command in a task can be outstanding at any given time. SCSI command execution results in an optional data phase and a status phase. In the data phase, data travels either from the initiator to the target, as in a WRITE command, or from the target to the initiator, as in a READ command. In the status phase, the target returns the final status of the operation. The status response terminates an SCSI command or task.
The basic function of the SCSI driver is to build SCSI Command Descriptor Blocks (CDB) from requests issued by the application, and forwards them to the iSCSI layer. The SCSI driver also receives CDBs from the iSCSI layer and forwarding the data to the application layer.
iSCSI protocol is an Internet draft standard being defined to allow SCSI commands to be carried over TCP/IP protocol. The iSCSI protocol is discussed at greater length in Krueger, M., Haagens, R. Sapuntzakis, C. and M. Bakke, “Small Computer Systems Interface protocol over the Internet (iSCSI) Requirements and Design Considerations”, RFC 3347, July 2002 and Satran, J., Meth, K., Sapuntzakis, C., Chadalapaka, M. and E. Zeidner, “iSCSI”, draft-ietf-ips-iscsi-20.txt, Jan. 19, 2003, both of which are incorporated by reference herein in their entirety and for all purposes.
iSCSI provides initiators and targets with unique names as well as a discovery method. The iSCSI protocol establishes communication sessions between initiators and targets, and provides methods for them to authenticate one another. An iSCSI session may contain one or more TCP connections and provides recovery in the event connections fail. SCSI CDBs are passed from the SCSI generic layer to the iSCSI transport layer. The iSCSI transport layer encapsulates the SCSI CDB into an iSCSI Protocol Data Unit (PDU) and forwards it to the Transmission Control Protocol (TCP) layer. On a read, the iSCSI transport layer extracts the CDB from the iSCSI PDU, received from the TCP layer, and forwards the CDB to the SCSI generic layer. iSCSI provides the SCSI generic command layer with a reliable transport.
The iSCSI protocol enables a methodology for both naming and address of initiators and targets. iSCSI provides a means of uniquely identifying (naming) iSCSI initiators and targets with a URN like iSCSI Name. In addition to an iSCSI Name each iSCSI initiator and target has one or more addresses. Addresses can change as an initiator or target move, but the name stays the same. For human readability initiators and targets may also have a non-unique alias.
The iSCSI Names are used in iSCSI: 1) to identify an initiator and target that may be addressable via more than one IP address and TCP port, 2) as an identifier for configurations that present multiple initiators or targets or both behind a single IP address and TCP port, 3) as a method to recognize multiple paths to the same initiators or targets on different IP addresses and TCP ports, 4) as an identifier for initiators and targets to enable them to recognize each other regardless of IP address and TCP port mapping on intermediary firewalls, and 5) as a symbolic address for source and destination targets for use in third-party commands.
The iSCSI Name defines a method to provide naming authorities with a unique top-level name space. The use of the naming authority means that iSCSI Names can be assigned by OS vendors, driver or NIC vendors, device vendors, gateway vendors, service provider, or even the customers. An iSCSI Name consists of three parts: a type designator, followed by a naming authority, with the remaining format designated by the naming authority. In the first iSCSI Name of the following examples “iscsi” is the type designator and the naming authority is “com.acme”.
Examples of typical iSCSI Names are as follows:
iscsi.com.acme.sn.8675309
iscsi.com.acme.sw.hostid.4567890
The target may also provide a default iSCSI Target Name called “iSCSI” that is not a globally unique name. An initiator can log into this default target iSCSI Target Name and use a text command called “SendTargets” to retrieve a list of iSCSI Target Names that exist at that address.
iSCSI targets can be identified by a flexible path address (URL), where the path is the combination of DNS name or IP address, a TCP port, and the target iSCSI Name. An iSCSI address specifies a single path to an iSCSI target. The iSCSI address contains the iSCSI Name and is presented in a URL-like format. The iSCSI address format is as follows.
<domain-name>[:<port >]/<iSCSI Name>
The iSCSI address or URL is not generally used within normal connections between iSCSI initiators and targets; it is primarily used during discovery.
An alias is simply a descriptive name that can be assigned to an initiator or target that is independent of the iSCSI Name, and does not have to be unique. iSCSI Names and aliases are encoded in the UTF-8 text format, which allows them to include international characters, as well as ASCII.
Domain Name Service (DNS) may be used to resolve the <domain-name> of the URL to one or multiple IP addresses. When a domain-name resolves to multiple IP addresses, these addresses should be equivalent for functional purposes. This means that the addresses can be used interchangeably with consistent performance. The discovery process responds to two basic inquiries from an initiator: 1) where is iSCSI Target Name “iscsi.com.acme.sn.8675309”? and 2) I am iSCSI Initiator Name “iscsi.com.ame.sw.hostid.4567890” which target should I attempt to access?
An iSCSI initiator can discover an iSCSI target in the following different ways: 1) by configuring the target's address on the initiator, 2) by configuring a default target address on the initiator and the initiator connects to the target and requests a list of iSCSI Names, via a separate SendTargets command, 3) by issuing Service Location Protocol (SLP) multicast requests, to which the targets may respond, or 4) by querying a storage name server for a list of targets that it can access.
Before iSCSI initiators can send SCSI commands to a target, it must first establish an iSCSI session. A session is composed of one or more TCP connections. The initiator establishes each TCP connection and begins the login phase of that connection. The login phase must be completed on each TCP connection before it can be used to transport SCSI commands.
iSCSI login is a mechanism used to establish a TCP connection, between initiators and targets. It authenticates the parties, negotiates the session's parameters, open security association protocol, and marks the connection as belonging to an iSCSI session. The initiator begins the login process by connecting to a well known TCP port. The target listens on the well-known TCP port for incoming connections.
A single TCP connection is established to transfer SCSI commands, data, and status information for a single “task.” Communication between an initiator and target may occur over one or more TCP connections. One or more TCP connections linking an initiator and a target form a “session.” A session is used to identify to a target all the connections with a given initiator. TCP connections may be added to or deleted from a session.
As part of the login process the initiator and target my wish to authenticate each other and set the security association protocol for the session. Once the login process has completed the iSCSI session is said to be in the full feature phase. The initiator may then send SCSI commands and data to the various LUs on the target by encapsulating them in iSCSI messages that are sent over the established iSCSI session.
Existing IP SAN and associated transports suffer from a number of known limitations. For example, iSCSI currently provides a mechanism to address LUNs but does not provide a mechanism to encapsulate data and control information within the same instance of a connection. As a result, separate data transport and control information transport mechanisms must be used and additional functionality (e.g., multipathing, session management, advanced flow control mechanisms) is not provided.